თავი 1. Access  2007-ის ობიექტური მოდელი

1.5. მართვის ელემენტების  მოვლენები
მართვის ელემენტების  მოვლენები ორ ჯგუფად შეიძლება იქნეს დაყოფილი: ფოკუსის გადართვასთან და  მონაცემების განახლებასთან  დაკავშირებული მოვლენები.
მართვის ელემენტების ფოკუსის გადართვასთან დაკავშირებული მოვლენები: Enter, Exit, GotFocus, LostFocus, Click, DbClick.
მართვის ელემენტებში კურსორის გადაადგილებისას წარმოიქმნება მოვლენები გამოწვეულნი თაგუნას ღილაკზე დაწკაპუნებისას და ტაბულაციის კლავიშზე დაჭერისას, კერძოდ განვიხილოთ მოვლენები: Enter (შესვლა), Exit (გამოსვლა), GotFocus (ფოკუსის მიღება), LostFocus (ფოკუსის დაკარგვა), Click (დაწკაპუნება), DbClick (ორჯერ დაწკაპუნება). 
წარმოიქმნება მოვლენა:
  • Enter (შესვლა) – a2 მართვის ელემენტის მიერ a1 მართვის ელემენტიდან  ფოკუსის მიღებამდე, ანუ    a1 მართვის ელემენტი კურსორმა დატოვა, მაგრამ a2-ში ჯერ კიდევ არ არის მოთავსებული;
  • Exit (გამოსვლა) – a1 მართვის ელემენტიდან a2 მართვის ელემენტისათვის ფოკუსის გადაცემამდე. კურსორი a1 მართვის ელემენტშია. ეს მოვლენა შიძლება გავაუქმოთ ან არ მივცეთ საშუალება კურსორმა დატოვოს a1 მართვის ელემენტი. მოვლენა წარმოიქმნება ამ ფორმაზე დატანილ ალმებზე ან სხვა მართვის ელემენტებზე დაწკაპუნებისას;

მაგალითი მოვლენა Exit-ის  გამოყენება
მოვლენა Exit წარმოიქმნება ყოველთვის კურსორის მართვის ელემენტიდან მეორე მართვის ელემენტზე გადასვლისას. ამიტომ ამ მოვლენასთან დაკავშირებულია ველში gvari სიმბოლოების  ჩაწერის ფაქტის აღმოჩენა. ველში სიმბლოების არსებობის აღმოჩენა ფუნქციით IsNull ხორციელდება. მოვლენას Exit ერთი არგუმენტი - Cancel აქვს. თუ მისი მნიშვნელობაა   True კურსორი შემდეგ მართვის ელემენტზე არ გადავა. 
Private Sub gvari_Exit(Cancel As Integer)
If IsNull(Me.gvari) Then
DoCmd.OpenForm "Fsecdoma"
Form_Fsecdoma.Lsecdoma.Caption = "gTxovT CaweroT studentis gvari, saxeli"
Cancel = True
End If
End Sub
ფუნქციით სიმბოლოების არარსებობის აღმოჩენისას გამოტანილი იქნება შეტყობინება - ფორმა Fsecdoma შეცდომის შეტყობინებით. გაღებული ფორმის გამოტანის გაჩერება ეკრანზე და შემდეგ გარკვეული დროის გავლის შემდეგ მისი დახურვა ხორციელდება ფორმის Fsecdoma მოვლენის Timer-თან დაკავშირებით, კერძოდ იწერება  
Private Sub Form_Timer()
DoCmd.Close acForm, "Fsecdoma"
End Sub
ამავე ფორმის თვისებაში Timer Interval მიეთითება მილიწამებში დრო, რა დროის განმავლობაში ფორმა გაღებული უნდა იყოს. 
  • GotFocus (ფოკუსის მიღება) – a2  მართვის ელემენტის მიერ ფოკუსის მიღება, კურსორი მოთავსდა a2-ში;

მაგალითი მოვლენა GotFocus-ის  გამოყენება
ზოგჯერ საჭიროა წინა ჩანაწერის გარკვეული ველების მნიშვნელობების  ავტომატურად გადმოტანა მიმდინარე ჩანაწერში. პროგრამით ხორციელდება ამ სიტუაციის რეალიზაცია, კერძოდ მაშინ, როცა კურსორი გადავა ველში fakul_nomeri დადგება მოვლენა GotFocus.
Private Sub fakul_nomeri_GotFocus()
 Dim can As New ADODB.Recordset
Dim dak As New ADODB.Connection
 Set dak = CurrentProject.Connection
’ჩანაწერების ამორჩევა ცხრილიდან tbstudentiz
kit = " select * FROM tbstudentiz"
can.Open kit, dak, adOpenKeyset, adLockPessimistic, adCmdText
If Not can.EOF Then
can.MoveLast ’ბოლო ჩანაწერზე გადასვლა
fakul_nomeri = can.Fields(5) ’ ბოლო ჩანაწერის ველში არსებული მნიშვნელობის მინიჭება ფორმაზე დატანილ მარტვის ელემენტისთვის fakul_nomeri
Me.spec_nomeri = can.Fields(6) ’ ბოლო ჩანაწერის ველში არსებული მნიშვნელობის მინიჭება ფორმაზე დატანილ მართვის ელემენტისთვის spec_nomeri  
End If
     can.Close
    dak.Close
    Set can = Nothing
    Set dak = Nothing
End Sub
  • LostFocus (ფოკუსის დაკარგვა) – a1  მართვის ელემენტის მიერ ფოკუსის დაკარგვა;
  • MouseDown – მოვლენა Click-მდე მომხმარებლის მიერ კლავიშზე თითის დაჭერისას, მაშინ როდესაც თაგუნას მაჩვენებელი მოთავსებულია მართვის ელემენტზე;
  • MouseMove – მართვის ელემენტის საზღვრებში თაგუნას მაჩვენებლის გადაადგილებისას;
  • MouseUp – მოვლენა Click-მდე მომხმარებლის მიერ კლავიშიდან თითის აღებისას, მაშინ როდესაც თაგუნას მაჩვენებელი მოთავსებულია მართვის ელემენტზე;

ამ მოვლენების თანმიმდევრობა შემდეგია: Exit>> LostFocus >> Enter >>GotFocus.
მართვის ელემენტებში მონაცემებთან დაკავშირებული მოვლენები: BeforeUpdate, AfterUpdate, KeyDown, KeyPress, KeyUp, Change, Dirty.
წარმოიქმნება მოვლენა:
  • BeforeUpdate (განახლებამდე) – მართვის ელემენტში მონაცემების ცვლილებისას მათი მართვის ელემენტში მონაცემების ჩაწერამდე ე.ი. მართვის ელემეტში მონაცემი ჩაწერილ იქნა (განხორციელდა ცვლილება), Enter კლავიშზე თითი დაჭერილ იქნა, მაგრამ მონაცემი მართვის ელემენტში სისტემის მიერ დაფიქსირებული არ არის. ამ დროს კურსორი ისევ ამ მართვის ელემენტშია.  ეს მოვლენა შეიძლება გამოყენებულ იქნეს მართვის ელემენტში ჩაწერილი მონაცემის: ტიპის, სისწორის შესამოწმებლად, კერძოდ შეცდომის აღმოჩენის შემთხვევაში გაუქმებულ იქნეს შესრულებული ოპერაცია და კურსორი დატოვებულ იქნეს ამავე მართვის ელემენტში;

მაგალითი – მართვის ელემენტის მოვლენის    AfterUpdate   გამოყენება
Private Sub Vgacdenili_BeforeUpdate(Cancel As Integer)
‘თუ ველში გაცდენილი საათების რაოდენობა ნულია ან ნულზე ნაკლებია ან ორზე მეტია, მაშინ გამოტანილ იქნეს შეტყობინება და კურსორი დატოვებულ იქნეს ამავე ველში
If Me.Vgacdenili <= 0  OR Me.Vgacdenili >2  Then
MsgBox “შეცდომა. გაცდენილი საათი არ შეიძლება ნულზე ნაკლები ან ნულის ტოლი ან ორზე მეტი იყოს”
Cancel = True
End If
End Sub
  • AfterUpdate (განახლების შემდეგ) –  მართვის ელემენტში მონაცემების ცვლილებისას მათი  მართვის ელემენტში მონაცემების ჩაწერის შემდეგ;
  • Updated (განახლებისას) – დაკავშირებული OLE ობიექტისთვის;
  • KeyDown – კლავიშზე დაჭერის შემდეგ;
  • KeyPress – კლავიშისთვის მონაცემის გადაცემის შემდეგ. ეს მოვლენა ხშირად გამოიყენება ველში ციფრების შეტანის კონტროლისთვის;

მაგალითი მოვლენა KeyPress გამოყენება
ამ პროგრამით ველში, რომლის სახელია nomeri შეიძლება მხოლოდ ციფრების ჩაწერა. კლავიატურაზე ციფრისგან განსხავავებული სიმბოლოს ჩაწერა შეუძლებელია
Private Sub nomeri_KeyPress(KeyAscii As Integer)
 If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then
KeyAscii = 0
End If
End Sub
  • KeyUp – კლავიშის აშვების შემდეგ;
  • Change – კლავიშზე აკრეფილი  სიმბოლოს მართვის ელემენტში გამოჩენის შემდეგ;
  • Dirty –  მართვის ელემენტში (ტექსტურ ველში) სიმონაცემთა ბაზაოლოს ჩაწერისას ველში მის ჩაწერამდე. ზოგადად  მონაცემების ცვლილებისას;
ყურადღება: სიობრივ მართვის ელემენტებს: ListBox, ComboBox, შეესაბამება სპეციფიკური მოვლენა NotInList

გაგრძელება იხ. შემდეგ გვერდზე